package com.study.ssm.factory02.beanpost;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * @author zhoujunlin
 * @date 2023年07月23日 21:24
 * @desc
 */
public class MyBeanPostProcessor implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        /**
         * Spring创建完对象，并进⾏注⼊后，可以运⾏Before⽅法进⾏加⼯获得Spring创建好的对象 ：通过⽅法的参数
         * 最终通过返回值交给Spring框架执行后续的初始化方法
         */
        //System.out.println("MyBeanPostProcessor.postProcessBeforeInitialization");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
//        System.out.println("MyBeanPostProcessor.postProcessAfterInitialization");
        /**
         * Spring执⾏完对象的初始化操作后，可以运⾏After⽅法进⾏加⼯获得Spring创建好的对象 ：通过⽅法的参数
         * 最终通过返回值交给Spring框架
         */
        if (bean instanceof Category) {
            Category category = (Category) bean;
            category.setName("后置处理后的类型");
        }
        return bean;
    }
}
